@echo off
chcp 65001 >nul

REM ===== 自动请求管理员权限 =====
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

if '%errorlevel%' NEQ '0' (
    echo 请求管理员权限...
    goto UACPrompt
) else (
    goto gotAdmin
)

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
    "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
    if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
    pushd "%CD%"
    CD /D "%~dp0"

setlocal

REM ===== 配置区 =====
set GHIDRA_DIR=C:\Program Files\ghidra_11.4.2_PUBLIC
set SCRIPT_NAME=GhidraMCPServer.java
set GSON_JAR=gson-2.10.1.jar

REM 目标目录
set GHIDRA_SCRIPTS=%GHIDRA_DIR%\Ghidra\Features\Base\ghidra_scripts

echo ========================================
echo Ghidra MCP 服务部署脚本
echo ========================================
echo.

REM 检查 Ghidra 目录
if not exist "%GHIDRA_DIR%" (
    echo [错误] 未找到 Ghidra 目录: %GHIDRA_DIR%
    echo 请编辑此脚本并设置正确的 GHIDRA_DIR 路径
    pause
    exit /b 1
)

REM 检查脚本文件
if not exist "%SCRIPT_NAME%" (
    echo [错误] 未找到脚本文件: %SCRIPT_NAME%
    pause
    exit /b 1
)

REM 检查 Gson jar
if not exist "%GSON_JAR%" (
    echo [警告] 未找到 Gson 库文件: %GSON_JAR%
    echo 正在下载 Gson...
    powershell -Command "Invoke-WebRequest -Uri 'https://repo1.maven.org/maven2/com/google/code/gson/gson/2.10.1/gson-2.10.1.jar' -OutFile '%GSON_JAR%'"
    if errorlevel 1 (
        echo [错误] Gson 下载失败
        pause
        exit /b 1
    )
    echo [成功] Gson 下载完成
)

REM 复制文件到 Ghidra 脚本目录
echo 正在复制文件到 Ghidra 脚本目录...
echo 目标目录: %GHIDRA_SCRIPTS%
echo.

copy /Y "%SCRIPT_NAME%" "%GHIDRA_SCRIPTS%\" > nul
if errorlevel 1 (
    echo [错误] 脚本复制失败
    echo 请确保以管理员权限运行此脚本
    pause
    exit /b 1
)
echo [成功] 已复制 %SCRIPT_NAME%

copy /Y "%GSON_JAR%" "%GHIDRA_SCRIPTS%\" > nul
if errorlevel 1 (
    echo [错误] Gson 库复制失败
    pause
    exit /b 1
)
echo [成功] 已复制 %GSON_JAR%

echo.
echo ========================================
echo [成功] 部署完成！
echo ========================================
echo.
echo 下一步操作:
echo 1. 打开 Ghidra
echo 2. 加载一个程序
echo 3. 打开脚本管理器（窗口 ^> 脚本管理器）
echo 4. 找到并运行: %SCRIPT_NAME%
echo.
pause